如何正确使用fork()和exec()

Sic*_*ldr 4 c fork process exec

我有这个代码;

pid_t process;
process = fork();

if (process < 0){
   //fork error
   perror("fork");
   exit(EXIT_FAILURE);
}
if (process == 0){
   //i try here the execl
   execl ("process.c", "process" , n, NULL);
}
else {
   wait(NULL);
}
Run Code Online (Sandbox Code Playgroud)

我不知道这种使用fork()exec()组合是否正确.当我尝试从bash运行程序时,我没有收到任何结果,所以我认为这部分代码可能存在问题.
谢谢.

NPE*_*NPE 15

一个问题是

if (process = 0){
Run Code Online (Sandbox Code Playgroud)

应该读

if (process == 0){
Run Code Online (Sandbox Code Playgroud)

否则,您分配process且仅execlresult非零(即从不)时调用.

而且,你正试图执行一些叫做的东西process.c.毫无疑问,人们可以拥有一个叫做的可执行文件process.c.但是,传统上.c以C 结尾的名称被赋予C源代码文件.如果process.c确实是C文件,则需要先编译并链接它.

一旦构建了可执行文件,就需要将其置于某个位置$PATH或指定其完整路径execle().在许多Unix环境中,将它放在当前目录中是不够的.

最后,目前还不清楚什么n是在execle()打电话,但这个名字暗示的数值变量.你需要确保它是一个字符串,而不是一个整数.