Tag: posix

如何限制C / POSIX中函数的执行时间?

与此问题类似,我想在C中限制函数的执行时间 – 最好是微秒精度。我想C ++exception可用于实现类似于此 Python解决方案的结果。 虽然它并不理想,但这种方法在普通C中完全不可用。 那么,我想知道如何在Posix系统上的C中经过一定的时间间隔后中断函数的执行? 对于相对简单的情况,一些愚蠢的业务工作得很好,但这增加了与问题解决方案正交的大量代码。 假设我有这样的函数: void boil(egg *e) { while (true) do_boil(e); } 我想在鸡蛋上运行煮沸*,每50μs打断一次,检查一下这样做: egg *e = init_egg(); while (true) { preempt_in(50, (void) (*boil), 1, e); /* Now boil(e) is executed for 50μs, then control flow is returned to the statement prior to the call to preempt_in. */ if (e->cooked_val > […]

如何检查带有pid X的进程是否是一个僵尸?

我得到了一个进程的PID,我需要检查它是否是在C中使用POSIX系统调用的僵尸。我应该怎么做? 我遇到的问题是我有一个过程,它分叉给许多孩子,孩子们都做高管,有时我想在后台做exec,所以我不能等待()那些背景的孩子。 我可以定期等待(一次在我的主循环中),但我需要知道哪些进程是僵尸,所以我的父进程在等待不会很快结束的孩子时不会挂起。 如果你很好奇,我正在构建一个unix shell,并且它具有shell性质,让子进程异步执行。

如何在C / C ++中获取系统语言?

如何在C / C ++中获取系统语言? 像en_US或en_GB。

什么时候摧毁pthread屏障是否安全?

如果我有一个初始化的pthread_barrier_t,什么时候可以安全地销毁它? 以下示例是否安全? pthread_barrier_t barrier; … int rc = pthread_barrier_wait(b); if (rc != PTHREAD_BARRIER_SERIAL_THREAD && rc != 0){ perror(“pthread_barrier_wait”); exit(1); } if (id == 0){ if(pthread_barrier_destroy(&(threads[t_root].info.tmp_barrier))){ perror(“pthread_barrier_destroy”); exit(1); } }

POSIX线程退出/崩溃/exception崩溃,同时持有互斥锁

是否存在定义明确的POSIX互斥锁所有权行为 线程退出 线程崩溃 线程因exception而崩溃 假设thread-1拥有一个互斥锁。 并且线程2正在等待获取相同的互斥锁。 并且线程1进入1/2/3场景。 对thread-2有什么影响? PS:我认为自旋锁的行为是,不要解除阻塞线程2,并推断受自旋锁保护的部分无论如何都是坏的形状。

c使用lseek以相反的顺序复制文件

我已经有了如何从一开始就将一个文件复制到另一个文件,但是我怎样才能修改程序以相反的顺序复制它? 源文件应具有读访问权和目标文件读写执行权。 我必须使用文件控制库。 例如 FILE A File B should be |———| |———-| |ABCDEF | |FEDCBA | |———| |———-| ** * ** * ** * ** * ** * ** * ** * 更新 * ** * ** * ** * 感谢MikeNakis的提示和建议,Sangeeth为您的代码 我已经重新编写了代码,现在它是以反向顺序打印文件大小的复制字节 这是代码 #include #include #include #include #include #include int main(int argc, char *argv[]) { […]

POSIX实现的状态

我刚刚发现原来是GNU扩展的getline()函数现在是POSIX 2008标准的一部分。 是否支持这个版本的POSIX有多广泛概述?

如何确定文件描述符是否可搜索?

是否有任何可移植的方式(在POSIX系统上)来确定文件描述符是否可搜索? 我的想法是使用lseek(fd, 0, SEEK_CUR); 并检查返回值是否为-1,但我不确定这是否会给出假阴性或误报。 使用fstat并假设哪些类型的文件是可搜索/不可搜索的并不是一个好主意。 还有其他想法吗?

usleep()在C中实现为忙等待吗?

我正在使用pthreads构建一个multithreading应用程序,需要一个线程来定期检查一些东西。 在此线程之间的时间内不应使用任何CPU。 usleep()吗? usleep()不忙等待吗? 或者有更好的解决方案吗?

为什么POSIX mmap没有返回volatile void *?

Mmap返回void *,但不返回volatile void* 。 如果我正在使用mmap来映射共享内存,那么另一个进程可能正在写入该内存,这意味着来自同一内存位置的两个后续读取可能会产生不同的值 – 这意味着volatile的确切情况。 那么为什么它不会返回一个易变的空隙*? 我最好的猜测是,如果你有一个专门写入共享内存段的进程,它不需要通过volatile指针查看共享内存,因为它总能正确理解存在的内容; 编译器为防止冗余读取所做的任何优化都无关紧要,因为没有其他任何内容可以写入并更改其下的值。 还是有其他一些历史原因? 我倾向于说返回volatile void*将是一个更安全的默认值,那些想要这个优化的人可以手动转换为void *。 POSIX mmap说明: http : //opengroup.org/onlinepubs/007908775/xsh/mmap.html