Это никогда не сработает.
Вы не можете использовать внешнюю переменную из двух разных программ и волшебным образом ожидать, что она будет работать. Это просто ... неправильно. Каждая программа работает в своем собственном адресном пространстве и ничего не знает о адресных пространствах других процессов. Есть методы для этого (посмотрите межпроцессное взаимодействие), но это совсем другая область.
Способ работы extern
заключается в том, что он позволяет вам получить доступ к переменной, определенной в другом файле C в рамках одной и той же программы .
Вы, кажется, неправильно понимаете на фундаментальном уровне, как программы, которые вы пишете, работают и выполняются, поскольку ожидаете, что это сработает. Я рекомендую прочитать больше о том, как работает C, а также, возможно, немного о том, как операционные системы размещают программы для их запуска.
Один из способов обмена информацией между такими программами, как вы описываете, - хранить данные в файле, который записывается одной программой (той, которая запускается первой) и читается другой, но это довольно сложно понять, тоже.