0 c linux embedded embedded-linux
我需要在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");
........
}
Run Code Online (Sandbox Code Playgroud)
谢谢
Ant*_*ala 10
该exec*等效
system("echo \"x = 800 , y = 480 , swap = swap_32_16\">"
"/sys/bus/platform/drivers/display/layer0");
Run Code Online (Sandbox Code Playgroud)
就像
execl("/bin/sh", "/bin/sh", "-c", "echo \"x = 800 , y = 480,"
" swap = swap_32_16\">/sys/bus/platform/drivers/display/layer0", (char*)NULL);
Run Code Online (Sandbox Code Playgroud)
问题在于,它将执行的命令完全相同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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |