标签: posix

如果进程是SIGKILLed,OS(POSIX)是否刷新内存映射文件?

如果使用SIGKILL终止进程,它对内存映射文件所做的更改是否会刷新到磁盘?我假设如果操作系统确保在通过SIGKILL终止进程时将内存映射文件刷新到磁盘,那么它也将使用其他终止信号(SIGABRT,SIGSEGV等等)执行此操作.

c c++ unix linux posix

13
推荐指数
1
解决办法
2131
查看次数

如何将PCRE转换为POSIX RE?

这个有趣的问题Regex匹配任何东西(包括空字符串),除了特定的给定字符串,关注如何在MySQL中进行负面预测.海报想要获得效果

Kansas(?! State)

因为MySQL没有实现预见断言,所以提出了许多答案

Kansas($|[^ ]| ($|[^S])| S($|[^t])| St($|[^a])| Sta($|[^t])| Stat($|[^e]))

海报指出,这是一个PITA,可以用于潜在的大量表达.

是否有PCRE(或其他软件包)的脚本/实用程序/模式将PCRE(如果可能)转换为不使用Perl时髦功能的等效正则表达式?我完全清楚一些Perl风格的正则表达式不能说是一个普通的正则表达式,所以我不希望这个工具做不可能的事情,当然!

regex posix

13
推荐指数
1
解决办法
2104
查看次数

僵尸进程

我有一些关于僵尸进程的问题

  • 僵尸流程概念的好处是什么?
  • 知道内核为僵尸进程保留(PID,终止状态,资源使用信息)
    "资源使用信息"的含义是什么
  • 如何僵尸的PPID()= 1并且它仍然是僵尸,(init收到Zombies,因为它默认为wait())
    任何人都可以编写一些C代码来制作僵尸它的父亲是Init吗?
  • 可以僵尸拒绝释放一些内存锁?

提前致谢

c unix posix process systems-programming

13
推荐指数
2
解决办法
2万
查看次数

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

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

c posix

13
推荐指数
4
解决办法
2万
查看次数

什么是路径//,它与/有什么不同?

我们知道根目录是/,并且根据posix,还有另一个目录//与/不同.当你ls /和ls //时,输出是相同的,所以作为stat,但是如果你cd /和cd //,它们是不同的,虽然目录内容是相同的.这让我很困惑.有人得到答案吗?

linux posix kernel pathname

13
推荐指数
1
解决办法
1228
查看次数

如何防止僵尸子进程?

我正在编写一个服务器,用于fork()为客户端连接生成处理程序.服务器不需要知道分叉进程会发生什么 - 它们自己工作,当它们完成时,它们应该只是死而不是变成僵尸.有什么简单的方法可以实现这一目标?

c posix zombie-process

13
推荐指数
2
解决办法
2万
查看次数

如何在不溢出的情况下使用mach_absolute_time?

在Darwin上,POSIX标准clock_gettime(CLOCK_MONOTONIC)计时器不可用.相反,最高分辨率的单调计时器是通过mach_absolute_time函数获得的mach/mach_time.h.

返回的结果可能是来自处理器的未调整的滴答计数,在这种情况下,时间单位可能是奇怪的倍数.例如,在具有33MHz滴答计数的CPU上,Darwin返回1000000000/33333335作为返回结果的确切单位(即,乘以该mach_absolute_time分数以获得纳秒值).

我们通常希望将精确刻度转换为"标准"(十进制)单位,但不幸的是,即使在64位算术中,绝对时间乘以分数也会溢出.这是苹果公司唯一的文件归属mach_absolute_time于(技术问答QA1398).1

我该如何编写正确使用的函数mach_absolute_time


  1. 请注意,这不是一个理论问题:QA1398中的示例代码完全无法在基于PowerPC的Mac上运行.在Intel Mac上,mach_timebase_info始终返回1/1作为缩放因子,因为CPU的原始滴答计数不可靠(动态速度步进),因此API会为您进行缩放.在PowerPC Mac上,mach_timebase_info返回1000000000/33333335或1000000000/25000000,因此Apple提供的代码每隔几分钟就会溢出一次.哎呀.

macos x86 posix powerpc darwin

13
推荐指数
2
解决办法
6567
查看次数

中断(n)诅咒输入信号

我的一个程序使用ncurses绘制一个小的tui.我的目标之一是使其可以移植到其他curses实现.这意味着我想在自己的调整大小操作上捕获终端模拟器发出的SIGWINCH,并更新我的tui以遵守更改的几何(并且不依赖于ncurses的调整大小设施).由于POSIX(据我所知)只允许访问sig_atomic_t信号处理程序中的变量,因此我将其设置为不同的状态.在主循环中,我的程序检查状态是否已更改并在必要时更新tui.

但是现在,getch当信号到达时,我遇到了我的程序挂起的问题.ncurses文档声明处理信号永远不会中断它.这意味着在按下输入键之前不会更新tui的大小.

是否有任何可移植的中断方式getch?我目前的方法是ungetch在信号处理程序中使用虚拟键,但我不确定是否允许这样做.实际上我找不到任何关于是否可以在信号处理程序中使用curses函数的文档.知道如何正确处理这件事吗?

问候

c curses posix tui ncurses

13
推荐指数
2
解决办法
2380
查看次数

POSIX对C中指针类型的限制

背景

POSIX标准增加了很多的库函数和其它标识符C语言.在dlsym()功能的描述中,它说(我强调):

概要

#include <dlfcn.h>

void *dlsym(void *restrict handle, const char *restrict name);
Run Code Online (Sandbox Code Playgroud)

描述

对dlsym()函数将获得符号的地址(一个功能标识符或数据对象标识符)...

C标准不保证函数指针可以转换为a void *,甚至不能保证指针的大小相同.这有效地增加了对C类型系统的额外限制.

我的问题是:

  • 对于C类型系统的这种限制是否有规范性参考,或者它只能从某些库函数的描述中推导出来?
  • POSIX甚至可以在一个系统上实现吗? sizeof (function pointer) > sizeof (void *)

参考

c posix function-pointers dlsym

13
推荐指数
1
解决办法
729
查看次数

waitpid,wnohang,wuntraced.我该如何使用它们

我有点困惑.据我了解,waitpid的pid为-1意味着我等待所有孩子完成但是如果我在WNOHANG的waitpid中添加一个选项,那么这些选项如果没有完成就会立即退出......这些似乎非常令人困惑.

为什么我要告诉计算机等待子进程完成然后立即告诉它如果没有孩子完成就立即退出?

有人可以解释这个选项和WUNTRACED选项吗?我不知道被追查的意义.

c posix waitpid

13
推荐指数
2
解决办法
3万
查看次数