【发布时间】:2019-11-27 17:25:21
【问题描述】:
我正在测试execl() 函数,但我无法解决如何在运行程序时显示execl() 之后的printf()。我发现它与fflush() 函数有关,尽管我仍然做不到。
这是代码。
#include<sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <stdio.h>
void main(){
printf ("Show content from directory /:\n");
execl( "/bin/ls", "ls", "-l", "/", NULL );
fprintf (stdout,"End of command: ls -l /\n");
fflush(stdout);
}
【问题讨论】:
-
你永远不会从
exec*()调用中返回,除非它失败了。 -
除非
execl()失败,否则它不会显示。exec()系列函数从字面上完全取代了当前进程。请参阅stackoverflow.com/questions/4204915/…(我会让其他人决定这是否与该问题重复。) -
你知道
execl()是做什么的吗?你知道它与system()有多么不同吗? (你可能想要system()。) -
如果您不想替换当前进程,请在使用
fork()创建的子进程中调用execl()。然后在父级中使用wait()等待它完成。
标签: c