gpt4 book ai didi

c - 如何在 execlp 系统调用后打印行

转载 作者:太空宇宙 更新时间:2023-11-04 03:09:45 25 4
gpt4 key购买 nike

我知道当 execlp 系统调用成功执行时,它不会返回调用进程。有没有办法在调用 execlp 后返回并打印该行。

int main() 
{
pid_t pid;
/* fork a child process */
pid = fork();
if (pid < 0)
{
/* error occurred */
fprintf(stderr, "Fork Failed");
return 1;
}
else if (pid == 0)
{
/* child process */
execlp("/bin/ls","ls", "-lrth", NULL);
printf("In Child after execlp call\n");
}
else
{
/* parent process */
/* parent will wait for the child to complete */
wait(NULL);
printf("Child Complete");
}
return 0;
}

我想看到打印“在 execlp 调用后的子进程中”。如何实现。

最佳答案

关于:

execlp("/bin/ls","ls", "-lrth", NULL); 
printf("In Child after execlp call\n");

函数:execlp() 如果成功则永远不会返回。此外,当(在这种情况下)ls 退出时,子进程不再存在。

所以正确的做法是处理 execlp() 调用失败的情况。如果失败,正确的代码将是:

perror( "execlp failed" );
exit( EXIT_FAILURE );

注意:对 perror() 的调用会将您的错误消息以及系统认为发生错误的原因输出到 stderr

关于c - 如何在 execlp 系统调用后打印行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57675898/

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