posix相关内容
read()和recv()有什么区别,send()和write() 在套接字编程中的性能、速度和其他行为? 解决方案 不同的是recv()/send()只对socket描述符起作用,让你为实际操作指定某些选项.这些函数更专业一些(例如,您可以设置一个标志来忽略 SIGPIPE,或者发送带外消息...). 函数read()/write()是通用文件描述符函数,作用于所有描述符.
..
我正在使用一个科学软件,其中包括一个调用 os.system() 的 Python 脚本,该脚本用于运行另一个科学程序.当子进程运行时,Python 有时会打印以下内容: 在文件对象析构函数中关闭失败:IOError: [Errno 9] 错误的文件描述符 我相信这条消息是在 os.system() 返回的同时打印出来的. 我现在的问题是: 哪些情况会导致这种类型的 IOError
..
Posix 需要在端口打开时更改 RTS 引脚.我想要一种方法来避免它. 解决方案 遇到同样的问题,我会尝试通过修补 ftdi_sio 内核驱动程序.您只需要像这样在 ftdi_dtr_rts() 中取消注释一小段代码: static void ftdi_dtr_rts(struct usb_serial_port *port, int on) {.../* 删除 RTS 和 DTR *
..
在/用于 Windows 7 中是否有完整的 POSIX 实现(我正在考虑适用于 UNIX 的 Windows 服务)? 是否在每个版本的操作系统中都可用(似乎没有)? 它如何在以前的 MS Windows POSIX 实现上添加/改进或中断? 在哪里可以找到有关 Windows 7 中 POSIX 合规性的特定 Microsoft 方法和实施的更多信息? 解决方案 SU
..
如何区分正在运行的 Java 线程和本机线程? 在Linux中,每个子进程都会有一个父进程,他们说0是所有进程的父进程,那么所有分叉的Java线程都会有一个父线程吗? 我如何知道哪个 Java 线程与 OS 线程相关(如果 Java 线程派生出本机进程线程). Java 线程和 OS 线程有什么命名约定吗? 一个正在运行的 Java 线程可以被另一个 Java 代码挂起或终
..
如何在 C++ 中捕获 Ctrl+C 事件? 解决方案 signal 不是最可靠的方法,因为它在实现上有所不同.我建议使用 sigaction.Tom 的代码现在看起来像这样: #include #include #include #include 无效 my_handler(int s){printf("捕获
..
我正在运行 CentOS 5.2 并使用 yum 来管理软件包.我在安装 php-posix 时运气不佳,但几乎 100% 确信它是一个真实且可用的软件包……在某个地方.有人安装成功了吗? FWIW,我正在使用以下内容: sudo yum install -y php-posix 更新: 我已经意识到这可能是我的主机 (Slicehost) 的问题,因为我确实为我的 PHP 版本
..
我知道当内核使用它来报告内存访问冲突时,不能忽略 SIGSEGV.但是,如果我为 SIGSEGV 安装一个什么都不做的信号处理程序,然后另一个进程使用 kill 向我发送该信号,这是否与我使用“正常"信号(如 SIGUSR1)的行为相同?p> 解决方案 Grijesh Chauhan 的回答在技术上是正确的,但很难理解,所以我将写出我自己对基本相同点的阐述.带脚注.0 Dima 询问当一
..
假设我有以下 C 代码: static void handler(int sig, siginfo_t *si, void *unused){printf("BOOM!\n");//这里的另一个段错误退出(-1);}int main(int argc, char *argv[]){结构 sigaction sa;sa.sa_flags = SA_SIGINFO;sigemptyset(&sa.s
..
什么是SEGV_MAPERR,为什么总是想出SIGSEGV? 解决方案 常见的有两种SEGV,这是内存访问无效导致的错误: 访问了具有错误权限的页面.例如,它是只读的,但您的代码试图写入它.这将报告为 SEGV_ACCERR. 访问的页面根本没有映射到应用程序的地址空间.这通常是由于取消引用空指针或被小整数值损坏的指针造成的.这被报告为 SEGV_MAPERR. SEGV_M
..
我有一个行为未定义的程序(vfork() 使用不当): #include #include #include int main (int argc, char *argv[]){pid_t pid;printf("___________前叉______________.\n");if((pid=vfork())
..
显然 POSIX 声明 文件描述符或流在打开它所引用的文件描述;打开的文件描述可能有几个手柄.[…] 应用程序的所有活动影响第一个句柄上的文件偏移量应暂停直到它再次成为活动文件句柄.[…] 手柄需要不在同一过程中适用这些规则.-- POSIX.1-2008 和 如果两个线程各自调用 [write() 函数],则每次调用应要么看到另一个调用的所有指定效果,要么没有其中.-- POS
..
是什么让操作系统成为 POSIX 系统?所有版本的 Linux 都是 POSIX,对吧?OSX 呢? 解决方案 是的.POSIX 是一组标准,为类 Unix 操作系统确定可移植 API.Mac OSX 是基于 Unix 的(并已通过此类认证),因此符合 POSIX 标准.POSIX 保证某些系统调用可用. 基本上,Mac 满足 POSIX 兼容所需的 API,这使其成为 POSIX
..
我希望有人能阐明如何让父进程等待 ALL 子进程完成,然后再继续分叉.我有想要运行的清理代码,但子进程需要在这发生之前返回. for (int id=0; id 解决方案 pid_t child_pid, wpid;整数状态 = 0;//父代码(子进程启动前)for (int id=0; id
..
在 C 中使用 #define _POSIX_SOURCE 对我的程序有什么好处?我可以在我的程序中访问更多的库,或者我可以调用一些直接存在于 C 中的函数.这个宏是做什么用的? 解决方案 它允许您使用不属于标准 C 库但属于 POSIX.1(IEEE 标准 1003.1)标准的函数.使用中描述的宏feature_test_macros 允许您控制公开的定义通过系统头文件. 据我所知
..
我有一个包含大约 200 万行日期字符串的 csv,格式如下: 2012/11/13 21:10:00 让我们称之为 csv$Date.and.Time 我想尽快将这些日期(及其随附数据)转换为 xts 我已经编写了一个脚本,可以很好地执行转换(见下文),但它非常慢,我想尽可能加快速度. 这是我目前的方法.有没有人对如何加快速度有任何建议? dt
..
如果我只有通过 PCI-Express BAR(基地址寄存器)映射到设备缓冲区的内存缓冲区的物理地址,我如何将该缓冲区映射到用户空间? 例如,代码在 Linux 内核中通常应该是什么样子? unsigned long long phys_addr = ...;//获取设备物理地址unsigned long long size_buff = ...l//获取设备大小 buff//... mm
..
我对多处理器机器中 posix 线程的并发性有一些疑问.我在 SO 中发现了类似的问题,但没有找到结论性的答案. 以下是我的理解.我想知道我是否正确. Posix 线程是用户级线程,内核不知道这一点. 内核调度程序会将进程(及其所有线程)视为一个实体进行调度.线程库反过来选择运行哪个线程.它可以在可运行线程之间分割内核给出的 CPU 时间. 用户线程可以在不同的 CPU 内
..
TL;DR:如果 Linux 内核丢失了缓冲的 I/O 写入,应用程序有什么办法可以找出来? 我知道您必须fsync()文件(及其父目录)以确保持久性.问题是如果内核因 I/O 错误而丢失待写入的脏缓冲区,应用程序如何检测到并恢复或中止? 考虑数据库应用程序等,其中写入顺序和写入持久性至关重要. 丢失写入?怎么样? Linux 内核的块层在某些情况下可能会丢失已由 writ
..
我发现这段代码被多次使用(也是一个类似的代码,它使用 open() 而不是 write()). int c = write(fd, &v, sizeof(v));if (c == -1 && errno != EINTR) {perror("写入输出文件");退出(EXIT_FAILURE);} 为什么要检查 &&errno != EINTR 在这里? 在man上寻找errno 我发现了
..