Create a gist now

Instantly share code, notes, and snippets.

@zed /.gitignore Secret
Created Feb 12, 2011

What would you like to do?
pass c-array via pipe
import struct, sys
from subprocess import Popen, PIPE
S = struct.Struct('i f f')
def pack(vertices, n):
yield struct.pack('i', n)
for v in vertices:
yield S.pack(*v)
def main():
try: n = int(sys.argv[1])
except IndexError:
n = 100
vertices = ((i,i+1,i+2) for i in range(n))
p = Popen(["./echo_vertices", "random", "arg"], stdin=PIPE, stdout=PIPE)
out, _ = p.communicate(b''.join(pack(vertices, n)))
index, x, y = S.unpack(out)
assert index == (n-1) and int(x) == n and int(y) == (n+1)
if __name__ == '__main__':
/** */
typedef struct {
int index;
float x;
float y;
} vertex;
int main(int argc, char* argv[]) {
int i;
vertex* VV;
int n = 0;
fread(&n, sizeof(int), 1, stdin);
VV =(vertex*) malloc(sizeof(vertex)*n);
/* write the last vertex */
fwrite(&VV[n-1], sizeof(vertex), 1, stdout);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment