我需要在C代码中执行一些Linux命令行,所以我选择使用system()
。不幸的是,它放进去了while(1)
,也许会使我的程序变慢。如果我使用exec()
家庭会改善吗?如果是,您能告诉我如何将此行从转换system()
为exec()?
while(1) { ........ system("echo \"x = 800 , y = 480 , swap = swap_32_16\"> /sys/bus/platform/drivers/display/layer0"); ........ }
谢谢
该exec*
等效
system("echo \"x = 800 , y = 480 , swap = swap_32_16\">" "/sys/bus/platform/drivers/display/layer0");
就像
execl("/bin/sh", "/bin/sh", "-c", "echo \"x = 800 , y = 480," " swap = swap_32_16\">/sys/bus/platform/drivers/display/layer0", (char*)NULL);
问题在于,它将执行的命令完全相同system
(在新分支的子进程中),只键入更多命令。并且由于exec
用新执行的程序替换了当前进程,因此该exec
调用将是您的程序执行的最后一个调用,除非您fork()
首先处理该进程...并处理失败,然后...等待子进程完成等。
在真正的解决方案,当然是在所有不使用外部命令,只是做在C:
FILE *f = fopen("/sys/bus/platform/drivers/display/layer0", "w"); if (!f) { // ... could not open ... } fputs("x = 800 , y = 480 , swap = swap_32_16\n", f); fclose(f);