首页 文章
  • 2 votes
     answers
     views

    阵列分段故障中的c错误

    我试图在osx和linux ubuntu的终端中运行这段代码: #include <pthread.h> #include <stdio.h> #include <unistd.h> int fact=1; //this data is shared by thread(s) int n; int x; int *arrayName; int main(int...
  • 4 votes
     answers
     views

    限制并发线程的数量(使用pthreads)

    我必须编写一个使用CURL在Web上发布信息的C应用程序 . 应用程序最多必须并行运行N(比如说10个)请求 . 我如何等待任何线程完成,而不是使用 pthread_join() 的特定线程 . 我读到了关于pthread_cond_wait的内容,但大多数示例都是控制线程(main)如何唤醒工作线程 . 我需要恰恰相反 - 工作线程必须能够在退出之前发出信号/唤醒父线程 . Update: 实际...
  • 2 votes
     answers
     views

    当grep通过POSIX管道接收输入并输出到POSIX管道时,它的行为是什么?

    我有这个程序,为孩子的stdin,stdout和stderr分叉并创建三个POSIX管道 . 在分叉之后,子和父关闭它们各自管道的适当端,使得子只能从stdin管道读取并且只写入stdout和stderr管道(而父对面的情况则相反) . 接下来,子进程关闭并将子进程的stdin,stdout和stderr复制到其打开的管道端,然后使用execvp执行其名称作为父进程的参数传入的程序 . 程序在行为...
  • 5 votes
     answers
     views

    在Python中发送和接收IPv6链路本地多播UDP数据报?

    以下是简单的IPv4 UDP广播,然后监听所有接口 . sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True) sock.bind(("", 1337)) sock.sendto("hell...
  • 5 votes
     answers
     views

    共享内存中的条件变量 - 此代码是否符合POSIX标准?

    POSIX标准是否允许 named 共享内存块包含互斥锁和条件变量? 我们一直在尝试使用互斥和条件变量来同步对LynuxWorks LynxOS-SE system(POSIX-conformant)上的两个进程对命名共享内存的访问 . 一个共享内存块称为 "/sync" ,包含互斥锁和条件变量,另一个是 "/data" ,包含我们同步访问的实际数据 . 如...
  • 8 votes
     answers
     views

    退出C中的功能

    C中的 exit() , _exit() 和 _Exit() 有什么区别? 我该如何决定使用哪个? 在bash, 男子2退出 给了我页面_EXIT(2),而 男子3退出 给了页面EXIT(3) .
  • 1 votes
     answers
     views

    查找给定输入的唯一路径名

    我说我让用户指定一个指向包含一些数据的文件的路径名 . 然后我可以做 Data* pData=Open(PathName) . 现在,如果用户再次指定相同的路径名,我希望能够拥有一个已打开文件的表,只返回指向相同数据的指针: Data* pData2=GetOpenedData(PathName) . 使用简单的 std::map<std::string,Data*> 很容易实现,...
  • 0 votes
     answers
     views

    Umask的新贵`独角兽`被忽略了

    我正在使用 upstart v1.4 来启动我的应用程序服务器,它被称为unicorn . upstart 配置文件如下所示: description "Unicorn Application Server" start on network stop on runlevel [!2345] umask 0003 setuid unicorn setgid myprojec...
  • 36 votes
     answers
     views

    加载共享库时自动执行的功能

    在Windows中加载共享库时, LoadLibrary() 调用会导致库中的 DllMain 为每个新进程和线程库附加执行,并为每个进程和线程库执行detaaches . Mac OS X,Linux和其他POSIX兼容的操作系统是否有类似的机制?
  • 1 votes
     answers
     views

    我退出时为什么我的守护程序不会终止?

    我正在阅读Linux进程组和会话 . 从this site我看到: 当用户退出系统时,内核需要终止用户运行的所有进程...为了简化此任务,将进程组织为多组会话 . 会话的ID与通过setsid()系统调用创建会话的进程的pid相同 . 该过程称为该会话组的会话负责人 . 然后,所有该进程的后代都是该会话的成员,除非他们专门从中删除它们 . setsid()函数不接受任何参数并返回新的会话ID ...
  • 1 votes
     answers
     views

    共享内存段中映射数据的内存管理

    我正在研究一个在Linux系统上使用IPC共享内存的项目 . 但是,我对这些段中的内存管理有点困惑 . 我正在为这个项目使用POSIX API . 我了解如何创建共享段,并且如果您无法使用 shm_unlink() 正确删除它们,这些段将一直持续到重新启动 . 另外,我了解如何分别使用 mmap 和 munmap 进行实际映射和取消映射 . 但是,这些操作的使用以及它如何影响这些共享段中的存储数据...
  • 110 votes
     answers
     views
  • 1 votes
     answers
     views

    测量编号页面错误发生在Linux上的程序

    我正在Linux调度程序上做一个项目,试图最小化页面错误的数量 . 我已完成算法实现,我需要测量效果 . 我想知道Linux是否提供了在整个执行过程中发生的记录页数错误的工具? 基本上,我想要类似的东西 $ pfstat ./a.out page faults: 3 Execution Time: 1003 ms 有这样的工具吗?我想在决定自己写一个之前确定一下,这将是很多工作......
  • 1 votes
     answers
     views

    在Unix程序中退出状态约定

    考虑一个Unix命令 foo ,该命令逐行读取文件(或 stdin ),其中每行应遵循特定格式,例如 /etc/passwd 格式 . 如果任何行不正确(但不是全部),终止状态是 EXIT_SUCCESS 还是 EXIT_FAILURE ? 我试过参考标准, C11 Standard: 7.20.4.3 The exit functionPara 5 最后,控制权返回到主机环境 . 如果stat...
  • 10 votes
     answers
     views

    printf是否总是在遇到换行符时刷新缓冲区?

    我的机器正在运行ubuntu 10.10,我正在使用标准的gnu C库 . 我的印象是,如果格式字符串中描述了换行符,printf会刷新缓冲区,但是下面的代码反复出现了这种趋势 . 有人可以澄清为什么缓冲区没有被刷新 . #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <...
  • 0 votes
     answers
     views

    使用适当的POSIX信号

    我目前正在开发一个项目,该项目具有守护进程,该进程查看任务队列,运行这些任务,然后收集有关这些任务的信息 . 在某些情况下,守护程序必须“杀死”任务,如果它运行时间太长 . SIGTERM的解释是“终止信号”,但这并不是很有用 . 我想为此使用最合适的信号 . 什么是最合适的POSIX信号编号,用于告诉进程“你花了太多时间运行所以你现在需要停止”?
  • 3 votes
     answers
     views

    为单个线程创建信号处理程序

    我想知道 sigaction 是否会为调用线程或整个进程创建一个信号处理程序 . 如果它解除阻塞信号并为整个过程创建信号处理程序,那么我怎样才能确保只有一个线程将使用信号处理程序并让其他线程阻塞信号 . 在我的情况下,我想要一个线程在报警信号关闭时调用信号处理程序而其他线程只是阻止它 . void alarmSigHandler(int signo){ } void* alarm_threa...
  • 731 votes
     answers
     views

    “POSIX”是什么意思?

    什么是POSIX?我已经阅读了Wikipedia article,每次遇到这个词时我都会阅读它 . 事实是,我从来没有真正理解它是什么 . 任何人都可以通过解释“对POSIX的需求”向我解释一下吗?
  • 7 votes
     answers
     views

    在Linux上持久耐用需要什么?

    我正在编写一些软件来处理非常关键的数据,并且需要知道我需要做些什么来实现持久性 . 我看的每个地方都是矛盾的信息,所以我很欣赏任何见解 . 我写入磁盘有三种方法 . 使用O_DIRECT | O_DSYNC,pread'ing然后pwrite'ing 512字节 - 16 MB块 . 使用O_DIRECT,pread'ing然后pwrite'ing 512字节块,并根据需要定期调用fda...
  • 2 votes
     answers
     views

    关闭后调用fsync(2)(2)

    场景: 任务代码(省略错误检查): // open, write and close fd = open(name); write(fd, buf, len); close(fd); < more code here **not** issuing read/writes to name but maybe open()ing it > // open again and fsync ...
  • 0 votes
     answers
     views

    如何从C中的PID获取进程名称? [重复]

    可能重复:如何在C中获取进程名称 我正在寻找一种从PID获取进程名称的方法? 我需要将进程ID(PID)转换为进程名称 任何的想法?
  • 0 votes
     answers
     views

    为多个HTTP连接重用客户端TCP套接字

    问候所有 . 我正在Linux 2.6.29-3.ydl61.3上制作ANSI C多线程www-crawler(HTTP 1.1兼容)并且进展顺利 . 我在MySQL数据库中有'000个域来收集页面 . 我可以根据需要以保持活动模式打开爬虫中的任何/所有域 . 我使用POSIX线程,没有任何竞争或数据竞争 . 虽然目标服务器似乎已准备好允许我对每个服务器套接字上的页面发出多个并发或顺序请求(因为每...
  • 3 votes
     answers
     views

    如何确保`waitpid(-1,&stat,WNOHANG)`收集所有子进程

    从Unix网络编程Vol1第三版第5.10节提取等待和waitpid功能 #include "unp.h" void sig_chld(int signo) { pid_t pid; int stat; while ( (pid = waitpid(-1, &stat, WNOHANG)) > 0) { ...
  • 2 votes
     answers
     views

    在Linux中创建独立进程

    我想在Linux上实现类似CreateProcess的功能 . 我做了很多研究,发现"Fork off and die"方法使用双叉在init下运行子进程 . 也就是说,允许孩子独立于父母进行操作 . 因为父级需要返回有关新创建的子进程的信息(即pid,name等),所以我需要知道我的代码中是否遇到了竞争条件 . 目前,我通过管道fork并检索第二个fork的pid,然后等待第...
  • 0 votes
     answers
     views

    我已经考虑了解Linux系统和getpid的结果

    pid:2394 tid:2399 pid:2394 tid:2398 pid:2394 tid:2397 pid:2394 tid:2395 this is using getpid() __NR_gettid* pid:2529 tid:1811777280 pid:2529 tid:1820169984 pid:2529 tid:1828562688 pid:2529 tid:18369...
  • 1 votes
     answers
     views

    将整数值保存为ansi c中char的字节值

    我想将ppm文件保存为P6 . 这意味着只有字节 . 另外我想以并行方式保存它,所以这就是我使用 mmap 来映射内存的原因 . 这是我试图保存所有内容的代码的一部分: char* map; //... int offset = sprintf(map,"P6\n%d %d\n%d\n",x,y,k); int count...
  • 3 votes
     answers
     views

    厕所关键例子中Binary Semaphore和Mutex之间的区别?

    我已经在Stackoverflow上阅读了关于此主题的帖子,但无法理解要点 . 也许我们可以将它们的差异限制在一个具体的例子 带锁的卫生间 . Mutex:一个线程接受密钥进入 . 如果任何其他线程需要进入厕所,他们等待 . 当前所有者出来并将钥匙交给警卫(OS内核),后者将厕所的船主交给另一个人 . 问题陈述:我看到所有人都同意共享资源必须由锁定它的那个线程中的相同互斥锁解锁 . 但对于二进制...
  • 0 votes
     answers
     views

    时钟不准确

    我将 unistd.h 的 clock() 的值分配给两个 int 类型,如下所示: int start_time = clock(); for (i = 0; i < 1000000; i++) { printf("%d\n", i+1); } int end_time = clock(); 但是,当我打印它们的值时,实际经过的时间与显示的时间不同 . 假设时...
  • 6 votes
     answers
     views

    更改系统时间对睡眠线程的影响是什么?

    如果您查看clock_gettime()函数(该函数在所有BSD中都可用并且实际上被定义为POSIX标准的一部分),您会看到至少支持三种类型的时钟(许多系统支持的时钟超过这些时钟,但是实际上POSIX标准只要求一个存在,所有其他都是可选的): CLOCK_REALTIME - POSIX要求它存在 . 这是挂钟时钟 . CLOCK_MONOTONIC - 不知道这是什么(以及SI...
  • 0 votes
     answers
     views

    POSIX套接字:接受不同传输协议的连接?

    我想知道接受N个不同连接所需的侦听端口/服务器套接字的数量所需的最小开销是多少,每个连接使用在IP之上运行的不同传输协议,例如, TCP,SCTP,DCCP,UDP等 当然,一个直截了当的方法是拥有N个独立的服务器套接字(每个都通过调用带有相应 protocol 参数的 socket() 来创建),每个套接字都在一个唯一的端口上进行监听 . 但是,在同时使用多个协议的应用程序中实现此方法将非常不方...

热门问题