小编nou*_*ney的帖子

使用 clang API 编译并运行 C 代码

我想使用 clang/llvm API 来编译一个在字符串中定义的 c 函数并立即执行它。就像是:

void main() {
  std::string codestr = "int foo(int bar) { return bar * 2; }"

  clang::??? *code = clang::???.compile(codestr);

  int result = code->call("foo", 5);
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找教程,但到目前为止我发现的内容与我的目标不太相符或不起作用,因为它引用了 LLVM 的过时版本。目前,我使用的是 LLVM 3.5。

有人手头上有好的教程吗?

api jit llvm clang

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

如何在c程序的TCP套接字编程中将整个字符串传递给读写函数

这里是一个示例程序,用于从服务器程序中的多个客户端到服务器获取月份或年份或时间请求,这里我无法发送"Fri Jan 11 11:59:51 2008"从服务器程序中的缓冲区到客户端的完整字符串.只有周五独自阅读客户端.

SERVER程序

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include <unistd.h>
#include <fcntl.h>
#include<sys/stat.h>
#include<time.h>

int main(int argc,char **argv) {
    int len,ch=0;
    int sockfd,newfd;
    struct sockaddr_in servaddr,cliaddr;
    char str[1000];

    sockfd=socket(AF_INET,SOCK_STREAM,0);
    if(sockfd<0)
        printf("cannot create socket");

    bzero(&servaddr,sizeof(servaddr));

    servaddr.sin_family=AF_INET;
    servaddr.sin_addr.s_addr=INADDR_ANY;      
    servaddr.sin_port=htons(7220);

    if(bind(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)
        printf("Bind error");

    listen(sockfd,5);

    len=sizeof(cliaddr);
    time_t current_time = time(NULL);
    struct tm* local_time = localtime(&current_time); 
    char *buff=asctime(local_time);
    int leng=sizeof(buff);

    //strcpy(buff,buff1);

    printf("%d",leng);
    printf("%s",buff);

    int n=0;

    while(1) {
        newfd=accept(sockfd,(struct sockaddr*)&cliaddr,&len);
        printf("request from client%d",n++);
        n=write(newfd,buff,sizeof(buff));
        //n=write(newfd,buff1+1,sizeof(buff1));
        printf("message sent to client%d",n);
    }

    close(newfd);
    close(sockfd); …
Run Code Online (Sandbox Code Playgroud)

c sockets

4
推荐指数
1
解决办法
7720
查看次数

poll 系统调用是否知道远程套接字是否关闭或断开连接?

int rc = poll(fds, 1, -1); 假设远程对等点出现故障。套接字在这里中断。在这种情况下,poll 系统调用将返回 -1 或将返回 > 0 并将断开连接报告为 FD 上的错误事件。

另外,轮询在 0 超时时会返回什么。int rc = poll(fds, nfds, 0);

c sockets network-programming tcp polling

2
推荐指数
1
解决办法
9238
查看次数

标签 统计

c ×2

sockets ×2

api ×1

clang ×1

jit ×1

llvm ×1

network-programming ×1

polling ×1

tcp ×1