草庐IT

timed_wait

全部标签

linux - 为什么 time.h 中的 time() 没有对 sys_time 的系统调用?

我编写了一个非常简单的程序,调用了time()来说明strace的用法,但是我遇到了问题;time()调用似乎实际上并没有产生系统调用!我最终进入了GDB中的time()函数,现在我比以往任何时候都更加困惑。来自time()函数的反汇编:0x7ffff7ffad90:pushrbp0x7ffff7ffad91:testrdi,rdi0x7ffff7ffad94:movrax,QWORDPTR[rip+0xffffffffffffd30d]#0x7ffff7ff80a80x7ffff7ffad9b:movrbp,rsp0x7ffff7ffad9e:je0x7ffff7ffada30x7f

linux - 用非 IO 事件中断 epoll_wait,无信号

当前场景是epoll_wait在几个fds和一个可能的传入消息队列上,我希望epoll_wait下面的循环在IO事件或新消息上执行。我知道的方法:使用time毫秒超时并在循环中首先检查队列使用self-pipetrick当消息可用时从队列代码中获取用标准信号中断系统调用使用epoll_pwait并细化前一点上面的几点都不让我满意,我想知道是否还有其他我没有找到的方法。原因是:在多线程代码中要避免信号,而且不是很可靠Timeoutone消除了epoll的部分好处,仅通过事件唤醒Self-pipetrick看起来是目前最好的方法,但样板代码仍然太多想法? 最佳答

c - 为什么 time() 不调用系统调用?

当我“跟踪”以下C程序时,time()不会调用系统调用。#includeintmain(){return(int)time(NULL);}为什么不呢?它从哪里得到一天中的时间?这是Ubuntu12.04上的完整strace输出。$gcc-Wall-otesttimetesttime.c&&strace./testtimeexecve("./testtime",["./testtime"],[/*34vars*/])=0brk(0)=0x11f1000access("/etc/ld.so.nohwcap",F_OK)=-1ENOENT(Nosuchfileordirectory)mmap

c - epoll_wait : maxevents

intepoll_wait(intepfd,structepoll_event*events,intmaxevents,inttimeout);我对maxevents参数有点困惑。假设我想编写一个可以处理多达10k连接的服务器。那么我会将maxevents定义为10000,还是出于某种原因它应该更低? 最佳答案 Maxevents就是*events指向的structepoll_events数组的长度。如果内核当时有超过该数量的事件要提供给您的程序,它将发现它不应该,因为您不希望在那个特定的_wait中返回那么多。您可能需要为您的程序

linux - 为什么我们需要在poll中调用poll_wait?

在LDD3中,我看到了这样的代码staticunsignedintscull_p_poll(structfile*filp,poll_table*wait){structscull_pipe*dev=filp->private_data;unsignedintmask=0;/**Thebufferiscircular;itisconsideredfull*if"wp"isrightbehind"rp"andemptyifthe*twoareequal.*/down(&dev->sem);poll_wait(filp,&dev->inq,wait);poll_wait(filp,&dev

linux - epoll_wait返回EPOLLERR时如何获取errno?

当epoll_wait为特定的fd返回EPOLLERR时,有没有办法找出errno?是否有关于错误性质的进一步信息?编辑:添加更多信息以防止歧义epoll_wait等待多个文件描述符。当你调用epoll_wait时,你传递给它一个epoll_event结构数组:structepoll_event{uint32_tevents;/*Epollevents*/epoll_data_tdata;/*Userdatavariable*/};epoll_data_t结构与您使用epoll_ctl将文件描述符添加到epoll的结构具有相同的细节:typedefunionepoll_data{voi

c - 核心实用程序中缺少 __vdso_time?

我构建了最新的glibc,现在我在使用coreutils中的函数时遇到了一些问题,例如ls或cat或任何其他类似vim.我的错误是-bash-4.0$catcat:errorwhileloadingsharedlibraries:__vdso_time:invalidmodefordlopen():Invalidargument我使用以下配置构建了glibc,没有错误../glibc/configure--prefix=/home/ex/uid377/glibbuilt在旧版本(如2.14)上,运行实用程序会导致段错误。-bash-4.0$./pwd./pwd:/lib64/libc.

linux - jar 文件的 Systemd 服务在几分钟后出现 "operation timed out"错误或停留在 "activating mode"

服务单位是:[Unit]Description=testAfter=syslog.targetAfter=network.target[Service]Type=forkingExecStart=/bin/java-jar/home/ec2-user/test.jarTimeoutSec=300[Install]WantedBy=multi-user.target它开始正常运行1-4分钟。但后来失败了:尾部/var/log/messages:Feb2718:43:44ip-172-31-40-48systemd:Reloading.Feb2718:44:06ip-172-31-40-4

Python - time.sleep(n) CPU 密集吗?

这个问题在这里已经有了答案:Python:PassorSleepforlongrunningprocesses?(7个答案)关闭9年前。我一直在考虑在python脚本中使用time.sleep(n)以使其以不同的时间间隔执行作业。伪代码如下所示:total_jobs=[...]next_jobs_to_run=next_closest(total_jobs)min_time_to_wait=closestTime(nextJobsToRun)waituntilmin_time_to_waitrunthemallgetnextjobs总而言之,程序会休眠直到需要执行下一个作业。它运行作业

c - time_t 的最大值(struct timespec)

我正在使用structtimespec结构,这里是:structtimespec{time_ttv_sec;/*Seconds*/longtv_nsec;/*Nanoseconds*/};事情是,用户将输入每个成员的值,我想检查最大值。用户可以输入的值。我可以取最大值吗?time_t的值作为整数最大值?即INT_MAX用于tv_sec和LONG_MAX(在limits.h中定义)用于tv_nsec?两者的最小可接受值是多少?是零吗?我猜不能接受负值?补充一下,这些值将在计时器中使用。P.S:time_t的typedef在哪里?未能及时找到。h。 最佳答案