c - 在 C 中与系统调用同步

标签 c synchronization system-calls locks

我做的事情有点奇怪,但我希望它完全同步。所以我想请你帮忙。我有以下内容:

printf("My name is:");
system("echo syntax_Error");
printf("I am 17 yrs old\n");

这很抽象而不是 echo 我正在执行一个给我输出的软件,所以执行时间是不可预测的,但顺序是一样的。我想要一个 printf 然后是系统调用然后是 printf 这样它们就这样对齐

My name is syntax_Error I am 17 yrs old\n

我在没有锁的情况下尝试了这个命令,但它没有起作用,这是很明显的,或者即使它有时起作用也是不可预测的。我是同步结构的新手,所以我想听听您的意见。

干杯!=)

最佳答案

如果您正在考虑 C 中的线程和互斥(同步),请查看 POSIX 线程。 (人线程)。

正如其他人所说,让您的字符串以正确的顺序刷新标准输出。如果您使用的操作系统带有支持 -n(无换行符)的“echo”,那么这就是您想要的。

#include <stdio.h>

int main(int argc, char *argv[]) {

printf("My name is:");
fflush(stdout);
system("/bin/echo -n syntax_Error");
printf("I am 17 yrs old\n");
fflush(stdout);

}

$ cc     main.c   -o main
$ ./main
My name is:syntax_ErrorI am 17 yrs old

除了使用“系统”之外,还可以查看“execve”等。“man execve”

关于c - 在 C 中与系统调用同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4958544/

相关文章:

c - 理解我的 for-loop 错误

java - 未编译 "base operand of ‘->’ 的 JNI IMU 代码具有非指针类型 ‘JNIEnv’“

multithreading - 在多线程(使用克隆)程序中调试段错误

c++ - 如何从更基本的同步原语制作多读/单写锁?

java - 多线程同步问题

c - statvfs 系统调用失败,错误值对于定义的数据类型来说太大

linux-kernel - 具有 > 6 个参数的 Linux 系统调用

c - 在低内存地址分配

c - 如何确保函数在内核模块中运行?

c++11 - 尝试使用 lambda 函数作为 condition_variable 等待方法的谓词