Tag: posix

如何在C / C ++中通知文件/目录更改,理想情况下使用POSIX

主题说明了一切 – 通常简单和跨平台的方式是智能地轮询。 但是每个操作系统都有一些无需轮询即可通知的方法。 是否有可能以合理的跨平台方式? (我只关心Windows和Linux,但我使用mac,所以我认为posix可能有帮助?)

typedef的命名方案

我正在开发一个广泛使用类似结构的库 typedef struct foo_bar_s { … } foo_bar_t; 使用_t后缀是个坏主意,因为它是POSIX保留的命名空间。 结构的_s后缀也很无用。 所以我想我可以改变一切 typedef struct foo_bar { … } foo_bar; 或者如果不需要结构名称 typedef struct { … } foo_bar; 但是,我无法再将typedef与常规符号(变量等)区分开来。 这真的是一个大问题,我应该为typedef使用不同的合适命名方案吗? 或者这不重要吗? 我真的不太确定。 你怎么看? 另外,您对typedef命名方案有什么建议?

有什么东西可以替换函数吗?

不推荐使用中的用户线程函数,因为它们使用了不推荐使用的Cfunction(它们使用带有空括号的函数声明作为参数 )。 它们有标准替代品吗? 我不认为成熟的线程擅长实现协作线程。

POSIX C API函数列表在哪里?

我试图找出我在哪里可以找到关于POSIXfunction的文档,但是很快就会出现。 有什么建议?

如何在LynxOS / POSIX中同步对共享内存的访问?

我正在通过共享内存进行通信的LynxOS SE (POSIX conformant)系统上实现两个进程。 一个过程将充当“生产者”,另一个过程充当“消费者”。 在multithreading系统中,我的方法是使用互斥和condvar(条件变量)对,消费者等待condvar(使用pthread_cond_wait ),生成器在更新共享内存时用信号通知(使用pthread_cond_wait ) 。 如何在多进程架构而不是multithreading架构中实现这一目标? 是否有LynxOS / POSIX方法来创建可在进程之间使用的condvar / mutex对? 或者在这种情况下,其他一些同步机制更合适吗?

如何在(POSIX)C中删除目录及其内容?

我对非递归情况最感兴趣,但我猜测其他可能跟踪这个问题的人会更喜欢看到递归情况。 基本上,我们的目标是: rm -rf 但是,系统调用将是一个不成熟的答案。

OpenMP和CPU亲和力

sched_setaffinity或pthread_attr_setaffinity_np可以在OpenMP下设置线程关联? 相关: CPU亲和力

创建使用getaddrinfo的静态链接二进制文件?

我已经包含了头文件netdb.h ,其中包含了getaddrinfo ,但是gcc发出了这个警告: warning: Using ‘getaddrinfo’ in statically linked applications requires at runtime the shared libraries from the glibc version used for linking gcc -m32 -static -s -O2 -std=c99 -D_POSIX_C_SOURCE=200112L myprogram.c 如何静态编译丢失的文件? 可能的解决方案: 可能是glibc安装缺少静态编译所需的相应目标文件。 如果是这种情况,请创建相应的目标文件并在编译时链接它。 尝试EGLIBC而不是glibc。 我成功地用dietlibc编译了我的程序,它编译时没有任何错误加上得到的二进制文件比glibc制作的要小得多。

如何在C(主机名和域信息)中找到当前计算机的完整主机名?

在C项目(POSIX)中,如何获取当前系统的完全限定名称? 例如,我可以通过从unistd.h执行gethostname()来获取我的机器的主机名。 这可能会给我machine3作为回报,但我实际上是在寻找machine3.somedomain.com 。 我如何获取此信息? 如果可能的话,我不想使用system()来执行此操作。

`write(2)`对本地文件系统的primefaces性

显然POSIX说明了这一点 文件描述符或流在其引用的打开文件描述上称为“句柄”; 打开的文件描述可能有几个句柄。 […]应用程序影响第一个句柄上的文件偏移量的所有活动都应暂停,直到它再次成为活动文件句柄。 […]句柄不需要在同一过程中应用这些规则。 – POSIX.1-2008 和 如果两个线程分别调用[write()函数],则每个调用应该看到另一个调用的所有指定效果,或者没有一个。 – POSIX.1-2008 我对此的理解是,当第一个进程发出write(handle, data1, size1)而第二个进程发出write(handle, data2, size2) ,写入可以按任何顺序发生,但data1和data2 必须都是原始的和连续的。 但运行以下代码会给我带来意想不到的结果。 #include #include #include #include #include #include #include die(char *s) { perror(s); abort(); } main() { unsigned char buffer[3]; char *filename = “/tmp/atomic-write.log”; int fd, i, j; pid_t pid; unlink(filename); /* XXX Adding O_APPEND to the flags […]