小编Wol*_*fer的帖子

如何将纪元之前的日期表示为UNIX时间戳

在我看来,我不知道在1970年之前存储日期的机制.1作为Unix时间戳.由于那个日期是Unix"时代",这并不奇怪.

但是 - 即使它不是为此而设计的 - 我仍然希望以Unix格式存储过去的日期.
我需要这个是有原因的.

所以我的问题是:如何让unix-timestamps包含"无效"但仍然有工作日期?存储负数秒会有效吗?我们甚至可以在unix时间戳中存储负数秒吗?我的意思是不是没有签名?

此外,如果我是正确的那么我只能存储日期,因为它1901. dec. 13 20:45:52可以在任何方式进一步延伸回历史?

time unix-timestamp

21
推荐指数
1
解决办法
1万
查看次数

Linux x86_64 汇编套接字编程

大家好。

所以我正在学习汇编。
按照我通常学习的任何新语言的学习步骤,我已经到达了使用程序集的网络。

遗憾的是,情况不太好,因为我在第 0 步几乎失败了,这将获得一个可以开始通信的套接字。

汇编代码应大致等于以下 C 代码:

#include <stdio.h>
#include <sys/socket.h>

int main(){
        int sock;
        sock = socket(AF_INET, SOCK_STREAM, 0);
}
Run Code Online (Sandbox Code Playgroud)

(让我们忽略它现在没有关闭套接字的事实。)

所以这是我到目前为止所做的:

  • 检查了手册。这意味着我需要做一个socketcall()这一切都很好。问题开始于它需要一个int描述它应该进行什么样的套接字调用的。调用手册对此也没有多大帮助,因为它仅描述了以下内容:

在某些架构上——例如 x86-64 和 ARM——没有 socketcall() 系统调用;相反,socket(2)、accept(2)、bind(2) 等实际上是作为单独的系统调用实现的。

  • 然而,在系统调用的原始列表中没有这样的调用——据我所知socket()accept()bind()listen()、 等是来自libnet而不是来自内核的调用。这让我很困惑,所以我决定编译上面的C代码并使用strace. 这产生了以下结果:

    套接字(PF_INET,SOCK_STREAM,IPPROTO_IP)= 3

  • 虽然这并没有让我更接近于知道它是什么socket() 但它确实解释了它的论点。对于女巫,我似乎没有找到合适的文档(再次)。我认为PF_INETSOCK_STREAMIPPROTO_IP就在被定义<sys/socket.h>,但我grep似乎对他们-ing没有发现使用的东西。所以我决定通过gdbdisass main查找值一起使用来实现它。这给出了以下输出:

    汇编代码转储功能主要:0x00000000004004fd …

c sockets linux assembly x86-64

5
推荐指数
1
解决办法
8216
查看次数

标签 统计

assembly ×1

c ×1

linux ×1

sockets ×1

time ×1

unix-timestamp ×1

x86-64 ×1