gpt4 book ai didi

c - Exec 不会调用我的第二个程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:50:44 25 4
gpt4 key购买 nike

我创建了一个测试文件以查看是否可以运行第二个程序,但代码并没有运行实际文件,尽管它似乎可以编译。我的 exec 语法不正确吗?

协调员.c

int main(int argc, char *argv[])
{

// Creates 2^n processes for n amount of values.
pid_t child = fork();

if(child < 0) //parent process
{
perror("fork() system call failed.");
exit(-1);
}

else if(child == 0) //Child Process, worker will be called here.
{
execl("/worker", "worker", "Hello", NULL);
printf("I'm the child %d, my parent is %d\n", getpid(), getpid());
}
else
{
printf("I'm the parent %d, my child is %d\n", getpid(), child);
wait(NULL); // wait for child process to catch up
}

}

worker .c

int main(int argc, char *argv[])
{
printf("Hi, I'm the worker file!");

return 0;
}

最佳答案

问题出在您传递给 execl()PATH 参数中。事实上,如果您确实在作为第一个参数传递的字符串的开头插入一个 /,该函数将在您的文件系统的根目录中寻找程序。要让它在当前目录中查找 worker 可执行文件,只需指定它的名称,即 execl("worker", ... ) execl("./worker", ... )

看看这里了解函数的工作原理https://www.systutorials.com/docs/linux/man/3-execl/

关于c - Exec 不会调用我的第二个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48481892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com