system
和exec
家庭命令有什么区别?特别是我想知道哪一个创建子进程工作?
我想使用fork()在我的程序中生成一个新进程.新进程只有一个任务:将鼠标输入重定向到串行端口.我在终端窗口中成功测试了以下命令:hexdump/dev/input/mice>/dev/ttyS0
到目前为止,我已经设法使用fork来创建子进程,但我的问题是我似乎无法使我的execl()方法正常工作:
execl("/usr/bin/hexdump", "hexdump", "/dev/input/mice > /dev/ttyS0", (char*) NULL);
Run Code Online (Sandbox Code Playgroud)
我也试过其他变种,像这样:
execl("/usr/bin/hexdump", "hexdump", "/dev/input/mice", ">", "/dev/ttyS0", (char*) NULL);
Run Code Online (Sandbox Code Playgroud)
但总是有相同的结果,退出值为1(一般错误).
还值得一提的是,我已经设法通过使用popen()方法使其工作,您可以在其中输入与在终端中完成的命令完全相同的命令.popen()的问题在于我没有找到终止进程的好方法.使用fork()我得到PID,并可以使用以下命令终止进程:
kill(pid, SIGKILL);
Run Code Online (Sandbox Code Playgroud)
这是一项要求,因为我必须能够在程序运行时根据需要停止并重新启动输出重定向.